package com.ruoyi.common.core.service;

import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.ruoyi.common.config.mybatis.CustomBaseMapper;
import com.ruoyi.common.core.domain.BaseEntity;

import java.io.Serializable;
import java.util.Collection;

/**
 * ServiceImpl 实现类（ 泛型：M 是 mapper 对象，T 是实体 ）
 * 增加逻辑删除和  恢复数据api
 * @Classname CustomServiceImpl
 * @Author: sunluquan
 * @Date: 2021/12/23 18:15
 * @Description TODO
 */
public class CustomServiceImpl<M extends CustomBaseMapper<T>, T extends BaseEntity> extends ServiceImpl<M,T> implements ICustomService<T> {
    /**
     * 执行逻辑删除 受影响数量大于0 时发布事件
     * @param queryWrapper 实体对象封装操作类（可以为 null,里面的 entity 用于生成 where 语句）
     * @return
     */
    @Override
    public int logicDelete(Wrapper<T> queryWrapper) {
        return getBaseMapper().logicDelete(queryWrapper);
    }

    /**
     * 执行逻辑删除 受影响数量大于0 时发布事件
     * @param id 主键ID
     * @return
     */
    @Override
    public int logicDeleteById(Serializable id) {
        return getBaseMapper().logicDeleteById(id);
    }

    /**
     * 执行逻辑删除 受影响数量大于0 时发布事件
     * @param ids 主键ID
     * @return
     */
    @Override
    public int logicDeleteBatchByIds(Collection<? extends Serializable> ids) {

        return getBaseMapper().logicDeleteBatchByIds(ids);
    }

    /**
     * 恢复逻辑删除时的数据
     * @param id 主键ID
     * @return
     */
    @Override
    public int recoverById(Serializable id) {
        return getBaseMapper().recoverById(id);
    }

    /**
     * 恢复逻辑删除时的数据
     * @param ids 主键ID集合
     * @return
     */
    @Override
    public int recoverBatchByIds(Collection<? extends Serializable> ids) {
        return getBaseMapper().recoverBatchByIds(ids);
    }

    @Override
    public M getBaseMapper() {
        return super.getBaseMapper();
    }


}
